home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Over 1,000 Windows 95 Programs
/
Over 1000 Windows 95 Programs (Microforum) (Disc 1).iso
/
0838
/
wftp.h
< prev
next >
Wrap
C/C++ Source or Header
|
1994-10-19
|
8KB
|
188 lines
/* *************************************************************** */
/* */
/* */
/* */
/* WFTP.DLL (Version 1.0) */
/* */
/* */
/* By Ph. Jounin (SNCF 71-26-12) */
/* Internet ark@ifh.sncf.fr */
/* Thanks to Santanu Lahiri */
/* *************************************************************** */
#ifndef WFTP_API
#include <winsock.h>
#ifdef DEBUG
# define FTP_DATABUFFER 256 /* slown down the transfer */
#else
# define FTP_DATABUFFER 1400 /* best value for X25/Ethernet/Token Ring */
#endif
/* ----------------------------------------------------------- */
/* ASCII or binary tranfser */
#define TYPE_A 'A'
#define TYPE_I 'I'
/* ----------------------------------------------------------- */
/* Return codes of FTP functions */
/* ----------------------------------------------------------- */
/* success */
#define FTPERR_OK 0 // succesful function
#define FTPERR_ENTERPASSWORD 1 // userid need a password
#define FTPERR_ACCOUNTNEEDED 2 // user/pass OK but account required
#define FTPERR_CANCELBYUSER -1 // Transfer aborted by user (FtpAbort)
/* user's or programmer's Errors */
#define FTPERR_SESSIONUSED 1001 // User has already a FTP session
#define FTPERR_NOTINITIALIZED 1002 // FtpInit has not been call
#define FTPERR_NOTCONNECTED 1003 // User is not connected to a server
#define FTPERR_CANTOPENFILE 1004 // can not open specified file
#define FTPERR_CANTWRITE 1005 // can't write into file (disk full ?)
#define FTPERR_NOACTIVESESSION 1006 // FtpRelease without FtpInit
#define FTPERR_STILLCONNECTED 1007 // FtpRelease without any Close
#define FTPERR_SERVERCANTEXECUTE 1008 // file action not taken
#define FTPERR_LOGINREFUSED 1009 // Server rejects usrid/passwd
#define FTPERR_NOREMOTEFILE 1010 // server can not open file
#define FTPERR_TRANSFERREFUSED 1011 // Host refused the transfer
#define FTPERR_WINSOCKNOTUSABLE 1012 // A winsock.DLL ver 1.1 is required
/* TCP errors */
#define FTPERR_UNKNOWNHOST 2001 // can not resolve host adress
#define FTPERR_NOREPLY 2002 // host does not send an answer
#define FTPERR_CANTCONNECT 2003 // Error during connection
#define FTPERR_CONNECTREJECTED 2004 // host has no FTP server
#define FTPERR_SENDREFUSED 2005 // can't send data (network down)
#define FTPERR_DATACONNECTION 2006 // connection on data-port failed
#define FTPERR_TIMEOUT 2007 // timeout occured
/* FTP errors */
#define FTPERR_UNEXPECTEDANSWER 3001 // answer was not expected
#define FTPERR_CANNOTCHANGETYPE 3002 // host rejects the TYPE command
/* Resource errors */
#define FTPERR_CANTCREATEWINDOW 5002 // Insufficent free resources
#define FTPERR_INSMEMORY 5003 // Insuffisent Heap memory
#define FTPERR_CANTCREATESOCKET 5004 // no more socket
#define FTPERR_CANTBINDSOCKET 5005 // bind is not succesful
/* ----------------------------------------------------------- */
struct S_FtpData
{
SOCKET ctrl_socket; /* control stream init INVALID_SOCKET */
SOCKET data_socket; /* data stream init INVALID_SOCKET */
SOCKET listen_socket; /* listen socket init INVALID_SOCKET */
char cType; /* type (ASCII/binary) init TYPE_A */
BOOL bVerbose; /* verbose mode init FALSE */
char szInBuf [512]; /* reception Buffer */
char szOutBuf [512]; /* incoming buffer */
struct sockaddr_in saSockAddr;
struct sockaddr_in saAcceptAddr;
}; /* struct S_FtpData */
struct S_FileTrf
{
HFILE hf; /* handle of the file which is being transfered */
unsigned nCount; /* number of writes/reads made on a file */
BOOL bAborted; /* data transfer has been canceled */
char szBuf[FTP_DATABUFFER]; /* Data buffer */
BOOL bNotify; /* application receives a msg each data packet */
}; /* struct S_FileTrf */
struct S_Msg
{
HWND hParentWnd; // window which the message is to be passed
UINT nCompletedMessage; // msg to be sent at the end of the function
}; /* struct S_Msg */
struct S_Verbose
{
HWND hVerboseWnd; // window which the message is to be passed
UINT nVerboseMsg; // msg to be sent each time a ctrl line is received
};
/* global structure */
struct S_ProcData
{
/* task data */
HTASK hTask; /* Task Id */
HWND hFtpWnd; /* Handle of the internal window */
HWND hParentWnd; /* handle given to the FtpInit function */
HINSTANCE hInstance; /* Task Instance */
/* Mesasge information */
struct S_Msg Msg;
struct S_Verbose VMsg;
/* File information */
struct S_FileTrf File;
/* Ftp information */
struct S_FtpData ftp;
/* Linked list */
struct S_ProcData far *Next;
struct S_ProcData far *Prev;
}; /* struct S_ProcData */
typedef struct S_ProcData far * LPProcData;
typedef struct S_FtpData far * LPFtpData;
/* **************************************************************** */
/* */
/* P R O T O T Y P E S */
/* */
/* **************************************************************** */
/* Utilities functions */
LPProcData PASCAL FAR FtpDataPtr (void);
int PASCAL FAR WEP (int nType);
int PASCAL FAR FtpSetVerboseMode (BOOL bVerboseMode, HWND hVerboseWnd, UINT wMsg);
/* Init functions */
int PASCAL FAR FtpRelease (void);
int PASCAL FAR FtpInit (HWND hParentWnd);
/* Connection */
int PASCAL FAR FtpLogin (LPSTR szHost, LPSTR szUser, LPSTR szPasswd,
HWND hParentWnd, UINT wMsg);
int PASCAL FAR FtpOpenConnection (LPSTR szHost);
int PASCAL FAR FtpCloseConnection (void);
int PASCAL FAR FtpLocalClose (void);
/* authentification */
int PASCAL FAR FtpSendUserName (LPSTR szUserName);
int PASCAL FAR FtpSendPasswd (LPSTR szPasswd);
/* commands */
int PASCAL FAR FtpHelp (LPSTR szArg, LPSTR szBuf, UINT uBufSize);
int PASCAL FAR FtpCWD (LPSTR szPath);
int PASCAL FAR FtpQuote (LPSTR szCmd, LPSTR szReplyBuf, UINT uBufSize);
/* file transfer */
int PASCAL FAR FtpAbort (void);
int PASCAL FAR FtpSendFile (LPSTR szLocal, LPSTR szRemote, char cType,
BOOL bNotify, HWND hParentWnd, UINT wMsg);
int PASCAL FAR FtpRecvFile (LPSTR szRemote, LPSTR szLocal, char cType,
BOOL bNotify, HWND hParentWnd, UINT wMsg);
DWORD PASCAL FAR FtpGetFileSize (void);
/* Directory */
int PASCAL FAR FtpDir (LPSTR szDef, LPSTR szLocalFile,
BOOL bLongDir, HWND hParentWnd, UINT wMsg);
/* _______________________________________________________________ */
#define WFTP_API loaded
#endif /* ifndef WFTP_API */